package com.mikao.service;

import com.mikao.dto.bo.*;
import com.mikao.dto.vo.*;
import com.mikao.entity.Type;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author KennyDavid
 */
public interface GoodsService {
    /**
     * 商品列表
     *
     * @param dataTableDTO 封装
     * @param nameOrMobile 名称
     * @param date         日期
     * @param type         类型
     * @return list
     */
    RspDataTableDto<GoodsDto> goodsList(ReqDataTableDto dataTableDTO, String nameOrMobile, String date, Long type);

    /**
     * 保存商品
     *
     * @param goodsForm  商品表单
     * @param coverImage 封面文件
     */
    void saveGoods(GoodsForm goodsForm, MultipartFile coverImage);

    /**
     * 删除商品
     *
     * @param aLong id
     */
    void removeGoods(Long aLong);

    /**
     * 改变商品状态
     *
     * @param status 状态
     * @param id     id
     * @return bool
     */
    boolean updateGoodsStatus(Boolean status, Long[] id);

    /**
     * 富文本上传图片
     *
     * @param image 图片名
     * @return 封装类
     */
    ImageDto saveImage(MultipartFile image);

    /**
     * 文件上传
     *
     * @param file 文件
     * @return 封装类
     */
    ImagesDto uploadFile(MultipartFile[] file);

    /**
     * 果树列表
     *
     * @param reqDataTableDto 封装类
     * @param treeForm        搜索
     * @return list
     */
    RspDataTableDto<TreeDto> treeList(ReqDataTableDto reqDataTableDto, TreeForm treeForm);

    /**
     * 添加用户果树近况
     *
     * @param treeEditForm 果树近况表
     */
    void addTree(TreeEditForm treeEditForm);

    /**
     * 收购果树订单
     *
     * @param reqDataTableDto 封装类
     * @param treeForm        查询
     * @return list
     */
    RspDataTableDto<TreeOrderDto> recycleTreeOrder(ReqDataTableDto reqDataTableDto, TreeForm treeForm);

    /**
     * 增加收购果树报价
     *
     * @param treePriceForm 报价表单
     */
    void addTreePrice(TreePriceForm treePriceForm);

    /**
     * 收购果实订单
     *
     * @param reqDataTableDto 封装
     * @param treeForm        查询
     * @return list
     */
    RspDataTableDto<FruitOrderDto> recycleFruitOrder(ReqDataTableDto reqDataTableDto, TreeForm treeForm);

    /**
     * 植友交易记录/用户果实市场
     *
     * @param reqDataTableDto 封装类
     * @param treeForm        查询
     * @return list
     */
    RspDataTableDto<FruitMarketDto> fruitMarketList(ReqDataTableDto reqDataTableDto, TreeForm treeForm);

    /**
     * 给植友间售卖发货
     *
     * @param sendForm 发货表
     */
    void sendFruitMarket(SendForm sendForm);

    /**
     * 植友间果树交易记录/用户果树市场
     *
     * @param reqDataTableDto 封装类
     * @param treeForm        查询
     * @return list
     */
    RspDataTableDto<TreeMarketDto> treeMarketList(ReqDataTableDto reqDataTableDto, TreeForm treeForm);
}
